<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>使用函数的第二种方式</title>
  <script type="text/javascript">
    //可以理解f1指向函数
    var f1 = function (){
      alert("hi simple");
    }
    console.log(typeof f1);
    f1();//调用函数
    var f3 = f1;
    f3();
    var f2 = function (name){
      alert("hi "+ name);
    }
    f2("小米");
    var f4 = function (n1,n2){
      return n1+n2;
    }
    alert("res "+f4(10,50));
    // 1. js的函数重载会覆盖掉上一次的定义
    // 2. 函数的 arguments 隐形参数 (作用在 function 函数内)
    // (1) 隐形参数: 在 function 函数中不需要定义，可以直接用来获取所有参数的变量。
    // (2) 隐形参数特别像 java 的可变参数一样。 public void fun( int ... args)
    // (3) js 中的隐形参数跟 java 的可变参数一样。操作类似数组
    function f5(){
      //遍历 函数的 arguments 隐形参数
      //arguments 是数组
      console.log("arguments = ",arguments);
      console.log("argument 长度 = " +arguments.length);
      alert("f5()...");
    }
    f5(10,20,30,"simple");
    //3 .(1)如果我们的函数有形参，在传入实参的时候，仍然按照顺序匹配
    //   (2)如果有匹配上，就赋给他， 如果没有匹配上，也无所谓
    //   (3)仍然会把所有的实参，赋给 arguments
    //   (4)如果形参个数，大于了实参个数，则该形参的值为undefined
    function f6(n){
      console.log("n"+n);//100
      console.log("arguments= ", arguments);//100, 90, 20
    }
    f6(100, 90, 20);
  </script>
</head>
<body>
</body>
</html>